﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ED_Nivelacion.Negocios;

namespace ED_Nivelacion.PresentacionWeb
{
    public partial class Login : System.Web.UI.Page
    {
        Login_C _obj = new Login_C();
        Docente_C _objDocente_C = new Docente_C();
        ED_Nivelacion.Negocios.DistribucionAcademica_C _objDAcademica_C = new ED_Nivelacion.Negocios.DistribucionAcademica_C();
        Periodo_C _objPeriodo_C = new Periodo_C();
        Coordinador_C _objCoordinador_C = new Coordinador_C();
        Matricula_C _objMatricula_C = new Matricula_C();
        Administrador_C _objAdmin_C = new Administrador_C();
        Cuestionario_C _objCuestionario_C = new Cuestionario_C();
        Autoevaluacion_C _objAuto_C = new Autoevaluacion_C();
        Co_Coordinador_C _objCoC_C = new Co_Coordinador_C();
        Co_Tutor_C _objCoT_C = new Co_Tutor_C();
        Heteroevaluacion_C _objHete_C = new Heteroevaluacion_C();
        Tutor_C _objTutor_C = new Tutor_C();

        protected void Page_Load(object sender, EventArgs e)
        {
           
        }

        protected void LogIng_Click(object sender, EventArgs e)
        {
            if (userTxt.Text == "" && passTxt.Text == "")
            {
                Response.Redirect("frm_Login.aspx");
            }
            else {
                login();
            }
            
                
        
        }

        void login()
        {
            string user = userTxt.Text;
            string pass = passTxt.Text;
            var _login = _obj.LogIn(user, pass).FirstOrDefault();
            int idPeriodo = _objPeriodo_C.ObtenerPeriodo().LastOrDefault().idPeriodo;
            int contar = _obj.LogIn(user, pass).Count();
            if (contar > 0)
            {
                if (_login.Cedula == user && _login.Clave == pass)
                {
                    Session.Add("PeriodoC", idPeriodo);
                    Session.Add("idUsuario", _login.idUsuario);
                    Session.Add("tipoUsuario", _login.TipoUsuario);
                    Session.Add("nombre", _login.Nombre);
                    Session.Add("apellido", _login.Apellido);
                    Session.Add("cedula", _login.Cedula);

                    if (_login.TipoUsuario == "Administrador")
                    {
                        var admin = _objAdmin_C.FiltrarAdministrador(_login.idPersona);
                        if (admin.Count > 0)
                        {
                            foreach (var item in _objAdmin_C.ObtenerAdministrador().Where(c => c.Cedula == _login.Cedula))
                            {
                                Session.Add("Admin", item.idAdministrador);
                                break;
                            }
                            Response.Redirect("frm_Inicio.aspx");
                        }
                        else
                        {
                            Response.Redirect("frm_login.aspx");
                        }
                        
                    }

                    else if (_login.TipoUsuario == "Docente")
                    {

                        Tutor_C _objTutor = new Tutor_C();
                        var Titulo = _objDocente_C.FiltrarDocente(_login.idPersona).FirstOrDefault().Titulo;
                        var idDocente = _objDocente_C.FiltrarDocente(_login.idPersona).FirstOrDefault().idDocente;

                        var Dist = _objDAcademica_C.FiltrarDistribucionAcademica(idDocente);
                        var cuest = _objCuestionario_C.FiltrarCuestionario("Docente", idPeriodo);
                        var auto = _objAuto_C.ObtenerAutoevaluacion(idDocente);
                        if (Dist.Count > 0)
                        {
                            if (cuest.Count > 0)
                            {
                                if (auto.Count == 0)
                                {
                                    Session.Add("idPeriodo", Dist[0].idPeriodo);
                                    Session.Add("Titulo", Titulo);
                                    Session.Add("Docente", idDocente);
                                    var tutor = _objTutor.FiltrarTutor(idDocente);

                                    Response.Redirect("frm_InicioDocente.aspx");
                                }
                                else
                                {
                                    Response.Redirect("frm_login.aspx");
                                }
                            }
                            else
                            {
                                Response.Redirect("frm_login.aspx");
                            }
                        }
                        else
                        {
                            Response.Redirect("frm_login.aspx");
                        }
                    }

                    else if (_login.TipoUsuario == "Estudiante")
                    {
                        var matricula = _objMatricula_C.FiltrarMatricula(_login.idPersona);
                        var cuest = _objCuestionario_C.FiltrarCuestionario("Estudiante", idPeriodo);
                        var hetero = 0;
                        if (cuest.Count > 0)
                        {
                            
                            if (matricula.Count > 0)
                            {
                                foreach (var item in matricula)
                                {
                                    Session.Add("Alumno", item.idAlumno);
                                    Session.Add("Matricula", item.idMatricula);
                                    Session.Add("Paralelo", item.idParalelo);
                                    hetero = _objHete_C.ObtenerHeteroevaluacion(item.idAlumno).Count;
                                    break;
                                }
                                if (hetero == 0)
                                {
                                    Response.Redirect("Inicio_Estudiante.aspx");
                                }
                                else
                                {
                                    Response.Redirect("frm_login.aspx");
                                }
                            }
                            else {
                                Response.Redirect("frm_login.aspx");
                            }
                        }
                        else
                        {
                            Response.Redirect("frm_login.aspx");
                        }


                    }

                    else if (_login.TipoUsuario == "Coordinador")
                    {
                        var coordinador = _objCoordinador_C.FiltrarCoordinador(_login.idPersona);
                        var cuest = _objCuestionario_C.FiltrarCuestionario("Coordinador", idPeriodo);
                        var cocoor = 0;
                        if (cuest.Count > 0)
                        {
                            if (coordinador.Count > 0)
                            {
                                foreach (var item in coordinador)
                                {
                                    Session.Add("Coordinador", item.idCoordinador);
                                    cocoor = _objCoC_C.ObtenerCo_Coordinador(item.idCoordinador).Count;
                                    break;
                                }
                                if (cocoor == 0)
                                {
                                    Response.Redirect("Inicio_Coordinador.aspx");
                                }
                                else
                                {
                                    Response.Redirect("frm_login.aspx");
                                }
                            }
                            else
                            {
                                Response.Redirect("frm_login.aspx");
                            }
                        }
                        else
                        {
                            Response.Write("<script>alert('No hay coordinacion')</script>");
                            Response.Redirect("frm_login.aspx");
                        }
                    }
                    else if (_login.TipoUsuario == "Tutor")
                    {
                        var tutor = _objTutor_C.FiltrarTutor(_login.idPersona);
                        var cuestT = _objCuestionario_C.FiltrarCuestionario("Tutor", idPeriodo);
                        var cotu = 0;
                        if (tutor.Count > 0)
                        {
                            if (cuestT.Count > 0)
                            {

                                foreach (var item in tutor)
                                {
                                    Session.Add("Tutor", item.idTutor);
                                    Session.Add("Jornada", item.idJornada);
                                    Session.Add("idPeriodo", item.idPeriodo);
                                    Session.Add("Periodo", item.Nombre_Periodo);
                                    cotu = _objCoT_C.ObtenerCotutor(item.idTutor).Count;
                                    break;
                                }
                                if (cotu == 0)
                                {
                                    Response.Redirect("Inicio_Tutor.aspx");
                                }
                                else
                                {
                                    Response.Redirect("frm_login.aspx");
                                }
                            }
                            else
                            {
                                Response.Redirect("frm_Login.aspx");
                            }
                        }
                        else
                        {
                            Response.Redirect("frm_Login.aspx");
                        }
                    }

                }
                else
                {
                    Response.Redirect("frm_Login.aspx");
                }
            }
            else
            {
                Response.Redirect("frm_Login.aspx");
            }
        }
    }
}